import SparkMD5 from 'spark-md5';

export function createChunk(file, index, chunkSize) {
  return new Promise((resolve, reject) => {
    const start = index * chunkSize;
    const end = start + chunkSize;
    const spark = new SparkMD5.ArrayBuffer();
    const fileReader = new FileReader();
    const blob = file.slice(start, end);
    fileReader.onload = e => {
      // spark.append拿到一个分片的时候，要进行MD5编码
      // 这个cpu密集型任务(在主线程执行的同步代码，需要一个一个的进行编码)，需要进行大量计算，耗时长
      spark.append(e.target.result);
      resolve({
        start,
        end,
        index,
        hash: spark.end(),
        blob,
        size: blob.size
      });
    };
    fileReader.onerror = () => { reject('读取文件时出错'); }
    fileReader.readAsArrayBuffer(blob);
  });
}
